package algorithm
import scala.collection.mutable.Map;
/**
  * 在柠檬水摊上，每一杯柠檬水的售价为 5 美元。
  * 顾客排队购买你的产品，（按账单 bills 支付的顺序）一次购买一杯。
  * 每位顾客只买一杯柠檬水，然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零，也就是说净交易是每位顾客向你支付 5 美元。
  * 注意，一开始你手头没有任何零钱。
  * 如果你能给每位顾客正确找零，返回 true ，否则返回 false 。
  */
object ZhaoLing {

  def lemonadeChange(bills: Array[Int]): Boolean = {

    var fiveCounts = 0;
    var tenCounts = 0;
    var twentyCounts = 0;

    for(item <- bills){
      item match {
        case 5 => fiveCounts+=1
        case 10 => {
          if(fiveCounts>=1){
            fiveCounts-=1;
            tenCounts+=1;
          }else{
            return false;
          }
        }
        case 20 =>{
          if(tenCounts>=1 && fiveCounts>=1){
            tenCounts-=1
            fiveCounts-=1
            twentyCounts+=1
          }else if(fiveCounts>=3){
            fiveCounts-=3
            twentyCounts+=1
          }else{
            return false;
          }
        }
      }
    }
    return true;
  }

}
